package problem0470

import "math/rand"

func rand10() int {
	t := 50
	for t > 39 {
		t = 7*(rand7()-1) + (rand7() - 1)
		// t 的取值范围为 [0,48]，每个数字出现的概率都是为 1/49
	}
	// t 的范围是 [0,39]，t 出现在这个范围内的概率是 40/49
	// 当 t 为 3, 13, 23 或 33 的时候， t%10+1 == 4
	// 返回 4 的概率 = (4 * 1/49) / (40/49) == 1/10
	// 同理可知，返回 [1,10] 中每个数字的概率都是 1/10
	// 符合题意
	return t%10 + 1
}

func rand7() int {
	return rand.Intn(7) + 1
}
